package com.eltsistemas.dao;

import com.eltsistema.hibernate.HibernateUtil;
import com.eltsistemas.modelo.Modelo;
import java.util.List;
import org.hibernate.Session;
import com.eltsistemas.modelo.Placa;
import org.hibernate.Query;

public class PlacaDao {
	
private Session session;
	
    public PlacaDao()
    {
    	session = new HibernateUtil().getSession();
        session.beginTransaction();
    }
	
    public void adiciona(Placa placa)
    {
	session.save(placa);
	session.getTransaction().commit();
        session.close();
    }
	
    public List<Placa> lista()
    {
        List<Placa> placaList = session.createCriteria(Placa.class).list();
        session.close();
        return placaList;
    }
	
    public Placa exibe(Placa placa)
    {
        Placa encontradoPlaca = (Placa) session.load(Placa.class, placa.getId());
        return encontradoPlaca;
    }
	
    public void altera(Placa placa)
    {
        session.update(placa);
        session.getTransaction().commit();
        session.close();
    }
	
    public void remover(Placa placa)
    {
        session.delete(placa);
        session.getTransaction().commit();
        session.close();
    }
    
    public Placa buscaCodigo(String nome)
    {
        Query query = this.session.createQuery("from Placa " +
                     	"where placa = :nome");
		
        query.setString("nome", nome);
				
        Placa encontradaPlaca = (Placa) query.uniqueResult();
        session.close();
        return encontradaPlaca;
		
    }
    
    public List<Placa> buscaVeiculo(Placa placa)
    {
        Query query = this.session.createQuery("from Placa " +
                     	"where id_cliente = :id_cliente");
		
        query.setLong("id_cliente", placa.getCliente().getId());
				
        List<Placa> placaList = query.list();
        session.close();
        return placaList;
		
    }
}
